package com.yanfan.data.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.yanfan.common.annotation.Excel;
import com.yanfan.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 流量卡对象 data_sim_card
 *
 * @author kerwincui
 * @date 2024-07-11
 */
@Data
@TableName("data_sim_card")
public class DataSimCard extends BaseEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 所查询的iccid
     */
    @Excel(name = "所查询的iccid")
    private String iccId;

    /**
     * 所查询的imsi(电信卡为空，联通、移动卡非空)
     */
    @Excel(name = "所查询的imsi(电信卡为空，联通、移动卡非空)")
    private String imsi;

    /**
     * 所查询的msisdn
     */
    @Excel(name = "所查询的msisdn")
    private String msisdn;

    /**
     * 卡类型(SINGLE：单卡，POOL：流量池卡)
     */
    @Excel(name = "卡类型(SINGLE：单卡，POOL：流量池卡)")
    private String type;

    /**
     * 状态，测试中：testing、库存：inventory、待激活：pending-activation、已激活：activation、已停卡：deactivation、已销卡：retired
     */
    @Excel(name = "状态，测试中：testing、库存：inventory、待激活：pending-activation、已激活：activation、已停卡：deactivation、已销卡：retired")
    private String status;

    /**
     * 卡当前套餐名称
     */
    @Excel(name = "卡当前套餐名称")
    private String iratePlanName;

    /**
     * 卡当前套餐ID
     */
    @Excel(name = "卡当前套餐ID")
    private Long ratePlanId;

    /**
     * 卡本月用量, 单位M
     */
    @Excel(name = "卡本月用量, 单位M")
    private BigDecimal dataUsage;

    /**
     * 卡套餐大小, 单位M
     */
    @Excel(name = "卡套餐大小, 单位M")
    private BigDecimal totalDataVolume;

    /**
     * 卡套餐用量，如果未激活无此字段，如果激活则为当前套餐用量，如果已经过期停卡则为最后一个套餐的用量
     */
    @Excel(name = "卡套餐用量，如果未激活无此字段，如果激活则为当前套餐用量，如果已经过期停卡则为最后一个套餐的用量")
    private BigDecimal usedDataVolume;

    /**
     * 卡套餐单位，false表示按流量（MB），true表示按次数
     */
    @Excel(name = "卡套餐单位，false表示按流量", readConverterExp = "M=B")
    private String useCountAsVolume;

    /**
     * 卡实名信息
     */
    @Excel(name = "卡实名信息")
    private String realName;

    /**
     * 卡实名审核状态，审核通过：pass、未提交：not-submit、审核不通过：not-pass、待审核：not-audit
     */
    @Excel(name = "卡实名审核状态，审核通过：pass、未提交：not-submit、审核不通过：not-pass、待审核：not-audit")
    private String realNameCertifyStatus;

    /**
     * 卡实名需求，需要实名：true、不需要实名：false
     */
    @Excel(name = "卡实名需求，需要实名：true、不需要实名：false")
    private String realNameRequired;

    /**
     * 运营商，unicom：中国联通，cmcc：中国移动，chinanet：中国电信
     */
    @Excel(name = "运营商，unicom：中国联通，cmcc：中国移动，chinanet：中国电信")
    private String carrier;

    /**
     * 卡功能列表
     */
    @Excel(name = "卡功能列表")
    private String functions;

    /**
     * 卡在运营商的状态, 可测试: TEST_READY_NAME, 库存：INVENTORY_NAME，可激活：ACTIVATION_READY_NAME， 已激活：ACTIVATED_NAME， 已停卡：DEACTIVATED_NAME，已销卡：RETIRED_NAME, 已清除：PURGED_NAME
     */
    @Excel(name = "卡在运营商的状态, 可测试: TEST_READY_NAME, 库存：INVENTORY_NAME，可激活：ACTIVATION_READY_NAME， 已激活：ACTIVATED_NAME， 已停卡：DEACTIVATED_NAME，已销卡：RETIRED_NAME, 已清除：PURGED_NAME")
    private String deviceStatus;

    /**
     * 出库时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date openDate;

    /**
     * 激活宽限期（天）
     */
    @Excel(name = "激活宽限期", readConverterExp = "天=")
    private String activeDuration;

    /**
     * 流量池id，type为POOL的才有此字段
     */
    @Excel(name = "流量池id，type为POOL的才有此字段")
    private String cardPoolid;

    /**
     * 测试期结束时间, 无测试期的卡此字段无效
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "测试期结束时间, 无测试期的卡此字段无效", width = 30, dateFormat = "yyyy-MM-dd")
    private Date testingExpireDate;

    /**
     * 卡套餐生效时间，如果未激活无此字段，如果激活则为当前套餐，如果已经过期停卡则为最后一个套餐
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "卡套餐生效时间，如果未激活无此字段，如果激活则为当前套餐，如果已经过期停卡则为最后一个套餐", width = 30, dateFormat = "yyyy-MM-dd")
    private Date ratePlanEffetiveDate;

    /**
     * 套餐过期时间，如果未激活无此字段，如果激活则为当前套餐，如果已经过期停卡则为最后一个套餐
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "套餐过期时间，如果未激活无此字段，如果激活则为当前套餐，如果已经过期停卡则为最后一个套餐", width = 30, dateFormat = "yyyy-MM-dd")
    private Date ratePlanExpirationDate;

    /**
     * 是否NB卡
     */
    @Excel(name = "是否NB卡")
    private String nbCard;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createTime;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updateTime;

    /**
     * 机构ID
     */
    @ApiModelProperty("机构ID")
    @Excel(name = "机构ID")
    private Long deptId;

    /**
     * 流量表请求参数id
     */
    @ApiModelProperty("流量表请求参数id")
    private Long dscRequestParamId;

}
